www.gusucode.com > 基于Matlab的MIMO通信系统仿真 含报告;司中威;了解移动通信 > 基于Matlab的MIMO通信系统仿真 含报告;司中威;了解移动通信关键技术,了解数字通信系统仿真流程,实现基本的信道编译码、调制解调等通信模块。(好评如潮,课设拿满) 学习并实现MIMO空时处理技术 学习性能分析的思路和方法/mimo/matlab for mimo 2x2/antenna_selection.m

    function [A, B]= antenna_selection(H,Delta_S_Set,type,SNR)
% function [A, B]= antenna_selction(H,Delta_S_Set,type,SNR)
% Antenna Subset Selection, choose A and B by type = MBER,MMI,LAZY
% A,B Antenna selected
% H channel matrix estimation
% Delta_S_Set exhaustive searching set of Delta_S
% type different criteria MBER=Minimum BER, MMI=Maximum Mutual Info
% SNR Signal to Noise Ritio in dB
% by Jinfeng Du
% 05-04-22
MBER = 1;
MMI = 2;
LAZY = 3;
MNP = 4; %Minimum Noise Power
MMNP = 5;
LAZY2 = 6;

if nargin<3
    type = MBER;
end
if nargin<4
    SNR = 20;%in dB
end
signal_noise = 10^(SNR/10.0);

if type == MBER % start of Minimum BER criteria
    set_len = length(Delta_S_Set);
    max_d = 0;
    for Ai = 1:2
        for Bi = 3:4
            d = norm(H([Ai Bi],:)*Delta_S_Set(:,1)); % Initial value of d
            for len = 2:set_len
                new_d = norm(H([Ai Bi],:)*Delta_S_Set(:,len));
                if new_d < d
                    d = new_d;
                end
            end %end of minimizing d 
            if d > max_d
                max_d = d;
                A = Ai;
                B = Bi;
            end % end of finding the maximum minimum d
        end %end of Bi
    end %end of Ai
% end of Minimum BER criteria

elseif type == MMI % start of Maximum Mutual Information criteria
    max_r = 0;
    for Ai = 1:2
        for Bi = 3:4
            new_r = det(eye(2) + signal_noise*H([Ai Bi],:)*H([Ai Bi],:)');
            if new_r > max_r
                max_r = new_r;
                A = Ai;
                B = Bi;
            end % end of finding the max_r
        end %end of Bi
    end %end of Ai
% end of Maximum Mutual Information criteria

elseif type == MNP % start of Minimum Noise Power criteria
    min_r = 10^8;
    for Ai = 1:2
        for Bi = 3:4
            new_r = trace(inv(H([Ai Bi],:))*inv(H([Ai Bi],:))');
            if new_r < min_r
                min_r = new_r;
                A = Ai;
                B = Bi;
            end % end of finding the min_r
        end %end of Bi
    end %end of Ai
% end of Minimum Noise Power criteria

elseif type == MMNP % start of Minimum Noise Power criteria
    max_r = 0;
    for Ai = 1:2
        for Bi = 3:4
            R = inv(H([Ai Bi],:))*inv(H([Ai Bi],:))';
            
            min_r = 1/R(1,1);
            if R(1,1) < R(2,2)
                min_r = 1/R(2,2);
            end
            
            if max_r < min_r
                max_r = min_r;
                A = Ai;
                B = Bi;
            end % end of finding the min_r
        end %end of Bi
    end %end of Ai
% end of Minimum Noise Power criteria

elseif type == LAZY % start of Lazy selection
   
        A = 1;
        B = 3;
 
% end of LAZY selection

elseif type == LAZY2 % start of Lazy selection
   
        A = 2;
        B = 4;
    
% end of LAZY selection

end% end of selection